package org.openpnp.spi;

import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JPanel;

/**
 * Provides an interface that allows a caller to build a tree of configurable items each having one
 * or more JPanel based property sheets for configuring that item. By descending through the
 * children with getChildPropertySheetProviders() a tree can be built.
 */
public interface PropertySheetHolder {
    public interface PropertySheet {
        String getPropertySheetTitle();

        JPanel getPropertySheetPanel();
    }

    String getPropertySheetHolderTitle();

    PropertySheetHolder[] getChildPropertySheetHolders();

    PropertySheet[] getPropertySheets();

    Action[] getPropertySheetHolderActions();

    Icon getPropertySheetHolderIcon();
}
